package mapper;

import entity.*;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CodeAnalysisMapper {
    // 类操作
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insertClass(Classes clazz);

    // 字段操作
    void insertFields(@Param("classId") int classId,
                      @Param("fields") List<Fields> fields);

    // 方法操作
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insertMethod(Functions functions);

    // 方法参数
    void insertParameters(@Param("methodId") int methodId,
                          @Param("params") List<FunctionParameters> params);

    // 函数调用
    void insertFunctionCalls(@Param("methodId") int methodId,
                             @Param("calls") List<FunctionCalls> calls);

    // 注解
    void insertAnnotations(@Param("parentType") String parentType,
                           @Param("parentId") int parentId,
                           @Param("anns") List<Annotations> annotations);

    // 导入
    void insertImports(@Param("classId") int classId,
                       @Param("imports") List<Imports> imports);

    // 实现接口
    void insertImplements(@Param("classId") int classId,
                          @Param("interfaces") List<String> interfaces);
}
